package com.csthink.mr.sort.partitioner;

import com.csthink.mr.sort.all.AccessStat;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

/**
 * 根据手机号前缀将不同开头的手机号分别按规则放到不同的分区中，最终 reducer 会生成到不同的文件
 *
 * @author <a href="mailto:csthink@icloud.com">Mars</a>
 * @since 2024-04-15 15:33
 */
public class AccessSortPartitioner extends Partitioner<AccessStat, Text> {

    @Override
    public int getPartition(AccessStat accessStat, Text text, int numPartitions) {
        String phone = text.toString();
        if (phone.startsWith("13")) {
            return 0;
        } else if (phone.startsWith("15")) {
            return 1;
        } else {
            return 2;
        }
    }
}
